﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using GazelDoor.Model;

namespace GazelDoor.Controlli
{
    public class ctrlStanza
    {
        GazelConnessione gazelConnector;

        public void InserisciStanza(Stanza stanza)
        {
            if (stanza != null)
            {
                gazelConnector = GazelConnessione.Istance();
                SqlCommand insert = new SqlCommand("insert into Stanze values(@id,@capienza,@numero)", gazelConnector.Connessione);

                SqlParameter id = new SqlParameter();
                id.ParameterName = "@id";
                id.SqlDbType = SqlDbType.UniqueIdentifier;
                id.Value = stanza.Id;
                insert.Parameters.Add(id);

                SqlParameter capienza = new SqlParameter();
                capienza.ParameterName = "@capienza";
                capienza.SqlDbType = SqlDbType.Int;
                capienza.Value = stanza.Capienza;
                insert.Parameters.Add(capienza);

                SqlParameter numero = new SqlParameter();
                numero.ParameterName = "@numero";
                numero.SqlDbType = SqlDbType.Int;
                numero.Value = stanza.Numero;
                insert.Parameters.Add(numero);
                try
                {
                    insert.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show("Errore :" + ex.Message);
                }
            }
        }

        public void UpdateStanza(Stanza stanza)
        {
            if (stanza != null)
            {
                gazelConnector = GazelConnessione.Istance();
                SqlCommand update = new SqlCommand("update Stanze set capienza = @capienza,numero = @numero where id = @id ", gazelConnector.Connessione);

                SqlParameter id = new SqlParameter();
                id.ParameterName = "@id";
                id.SqlDbType = SqlDbType.UniqueIdentifier;
                id.Value = stanza.Id;
                update.Parameters.Add(id);

                SqlParameter capienza = new SqlParameter();
                capienza.ParameterName = "@capienza";
                capienza.SqlDbType = SqlDbType.Int;
                capienza.Value = stanza.Capienza;
                update.Parameters.Add(capienza);

                SqlParameter numero = new SqlParameter();
                numero.ParameterName = "@numero";
                numero.SqlDbType = SqlDbType.Int;
                numero.Value = stanza.Numero;
                update.Parameters.Add(numero);

                try
                {
                    update.ExecuteNonQuery();
                }
                catch (SqlException e)
                {
                    MessageBox.Show("Errore : " + e.Message);
                }
            }
        }

        public DataTable SelectAll()
        {
            gazelConnector = GazelConnessione.Istance();
            SqlDataAdapter view = new SqlDataAdapter("Select id,numero as Numero,capienza as Capienza from Stanze order by numero", gazelConnector.Connessione);
            DataTable dt = new DataTable();
            view.Fill(dt);
            return dt;
        }

        //public void EliminaStanze(DataGridView data)
        //{
        //    Guid id;
        //    if (data.SelectedRows.Count > 0)
        //    {
        //        if (data.Columns[0] != null)
        //        {
        //            id = (Guid)data.SelectedRows[0].Cells["id"].Value;
        //            gazelConnector = GazelConnessione.Istance();

        //            SqlCommand cmd = new SqlCommand("delete from Stanze where id = '" + id + "'", gazelConnector.Connessione);
        //            try
        //            {
        //                cmd.ExecuteNonQuery();
        //            }
        //            catch (SqlException ex)
        //            {
        //                MessageBox.Show("Errore :" + ex.Message);
        //            }
        //        }
        //    }
        //}
        public void EliminaStanze(Guid id)
        {
            gazelConnector = GazelConnessione.Istance();
            SqlCommand cmd = new SqlCommand("delete from Stanze where id = '" + id + "'", gazelConnector.Connessione);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Errore :" + ex.Message);
            }


        }

        public Stanza GetStanzaById(Guid id)
        {
            Stanza stanza = new Stanza();
            DataTable dt = new DataTable();
            gazelConnector = GazelConnessione.Istance();
            SqlDataAdapter select = new SqlDataAdapter("Select * from Stanze where id = '" + id + "'", gazelConnector.Connessione);
            select.Fill(dt);
            stanza.Id = id;
            stanza.Numero = (int)dt.Rows[0]["numero"];
            stanza.Capienza = (int)dt.Rows[0]["capienza"];
            return stanza;
        }

        public Stanza GetStanzaByNumero(int i)
        {
            Stanza stanza = new Stanza();
            DataTable data = new DataTable();
            gazelConnector = GazelConnessione.Istance();
            SqlDataAdapter select = new SqlDataAdapter("Select * from Stanze where numero = '" + i + "'", gazelConnector.Connessione);
            select.Fill(data);
            if (data.Rows.Count > 0)
            {
                stanza.Id = (Guid)data.Rows[0]["id"];
                stanza.Numero = (int)data.Rows[0]["numero"];
                stanza.Capienza = (int)data.Rows[0]["capienza"];
            }
            return stanza;
        }
    }
}